package cn.moondev.node.impl;

import java.util.Map;

import cn.moondev.node.NodeBeanHandler;
import cn.moondev.node.NodeChainHandler;

/**
 * NodeChain的默认实现,主要逻辑处理也在run方法中<BR>
 * 实现思路：<BR>
 * 1 先解析出来root对应的bean对象，首先执行root.handle方法<BR>
 * 2 
 * @author scchen
 * @date   Sep 28, 2015
 */
public class NodeChainAdaptor implements NodeChainHandler {
	
	private NodeBeanHandler root;
	
	private Map<NodeBeanHandler,NodeBeanHandler> nodes;

	public <K, V> void run(Map<K, V> params) {
		root.handle(params);
		NodeBeanHandler header = root;
		while(nodes.get(header) != null) {
			NodeBeanHandler node = nodes.get(header);
			node.handle(params);
			header = node;
		}
	}

	public NodeBeanHandler getRoot() {
		return root;
	}

	public void setRoot(NodeBeanHandler root) {
		this.root = root;
	}

	public Map<NodeBeanHandler, NodeBeanHandler> getNodes() {
		return nodes;
	}

	public void setNodes(Map<NodeBeanHandler, NodeBeanHandler> nodes) {
		this.nodes = nodes;
	}
}
